package com.eshore.norm.pojo.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 虚拟网卡列表
 * </p>
 *
 * @author chenjl
 * @since 2024-01-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class NormPort implements Serializable {

    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    private Long id;

    /**
     * 资源池id
     */
    @ApiModelProperty(value = "资源池id")
    private Long configId;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createDate;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateDate;

    /**
     * 资源的管理状态，可以是启用（true）或禁用（false）。
     */
    @ApiModelProperty(value = "资源的管理状态")
    private Boolean adminStateUp;

    /**
     * 端口所在主机的ID。
     */
    @ApiModelProperty(value = "端口所在主机的ID")
    private String bindingHostId;

    /**
     * 用于端口的机制类型。像nova这样的API消费者可以使用它来确定将设备（例如虚拟服务器的接口）连接到端口的适当方式。当前定义的可用值包括ovs、bridge、macvtap、hw_veb、hostdev_physical、vhostuser、distributed和other。还有特殊值：unbound和binding_failed。unbound表示端口未绑定到网络后端。binding_failed表示端口无法绑定到网络后端的错误。
     */
    @ApiModelProperty(value = "用于端口的机制类型")
    private String bindingVifType;

    /**
     * 应将此端口附加到的vNIC类型。这用于确定要用于绑定端口的机制驱动程序。有效值为normal、macvtap、direct、baremetal、direct-physical、virtio-forwarder、smart-nic和remote-managed。实际上可用的vNIC类型取决于部署。
     */
    @ApiModelProperty(value = "应将此端口附加到的vNIC类型")
    private String bindingVnicType;

    /**
     * 资源创建的时间（使用UTC ISO8601格式）。
     */
    @ApiModelProperty(value = "资源创建的时间")
    private String createdAt;


    /**
     * 资源的描述。
     */
    @ApiModelProperty(value = "资源的描述")
    private String description;

    /**
     * 使用此端口的设备的ID。例如，服务器实例或逻辑路由器。
     */
    @ApiModelProperty(value = "使用此端口的设备的ID")
    private String deviceId;

    /**
     * 使用该端口的实体类型。例如，compute_nova（服务器实例）、network_dhcp（DHCP代理）或network_router_interface（路由器接口）。
     */
    @ApiModelProperty(value = "使用该端口的实体类型")
    private String deviceOwner;

    /**
     * 有效的DNS域。
     */
    @ApiModelProperty(value = "有效的DNS域")
    private String dnsDomain;

    /**
     * 有效的DNS名称。
     */
    @ApiModelProperty(value = "有效的DNS名称")
    private String dnsName;

    /**
     * 资源的ID。
     */
    @ApiModelProperty(value = "资源的ID")
    private String portId;

    /**
     * 指示端口使用延迟、立即或无IP分配（none）。
     */
    @ApiModelProperty(value = "指示端口使用延迟、立即或无IP分配（none）")
    private String ipAllocation;

    /**
     * 端口的MAC地址。如果端口使用direct-physical的vnic_type，则此字段的值将被来自活动绑定的profile的MAC地址覆盖（如果有）。
     */
    @ApiModelProperty(value = "端口的MAC地址")
    private String macAddress;

    /**
     * 资源的名称。
     */
    @ApiModelProperty(value = "资源的名称")
    @TableField("name")
    private String name;

    /**
     * 附加网络的ID。
     */
    @ApiModelProperty(value = "附加网络的ID")
    private String networkId;

    /**
     * 端口的安全性状态。有效值为enabled（true）或disabled（false）。如果启用端口安全性，则会将安全组规则和防伪装规则应用于端口上的流量。如果禁用，则不应用此类规则。
     */
    @ApiModelProperty(value = "端口的安全性状态")
    private Boolean portSecurityEnabled;

    /**
     * 项目的ID。
     */
    @ApiModelProperty(value = "项目的ID")
    private String projectId;

    /**
     * 与此端口所连接的网络的QoS策略的ID。
     */
    @ApiModelProperty(value = "与此端口所连接的网络的QoS策略的ID")
    private String qosNetworkPolicyId;

    /**
     * 与端口关联的QoS策略的ID。
     */
    @ApiModelProperty(value = "与端口关联的QoS策略的ID")
    private String qosPolicyId;

    /**
     * 资源的修订号。
     */
    @ApiModelProperty(value = "资源的修订号")
    private Integer revisionNumber;

    /**
     * 端口的状态。值为ACTIVE、DOWN、BUILD和ERROR。
     */
    @ApiModelProperty(value = "端口的状态")
    @TableField("status")
    private String status;

    /**
     * 项目的ID。
     */
    @ApiModelProperty(value = "项目的ID")
    private String tenantId;

    /**
     * 资源更新的时间（使用UTC ISO8601格式）。
     */
    @ApiModelProperty(value = "资源更新的时间")
    private String updatedAt;

    /**
     * 端口的上行链路状态传播。有效值为enabled（true）和disabled（false）。
     */
    @ApiModelProperty(value = "端口的上行链路状态传播")
    private Boolean propagateUplinkStatus;

}
